package sgpt.Beans.DAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import sgpt.Beans.Translado;
import sgpt.Beans.DAO.interfaces.ItransladoDAO;

public class TransladoDAO implements ItransladoDAO{
	
	Statement db;
	private List<Translado> translados = new ArrayList<Translado>();
	
	
	public TransladoDAO(Connection conn) {
		super();
		try {
			this.db = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("******* Erro ao criar Statement "+this.getClass().getSimpleName());
			System.out.println(e.getMessage());
		}
	}

	private List<Translado> getTransladosFromSQL(String sql){
		List<Translado> retTranslados = new ArrayList<Translado>();
		Translado translado;
		try {
			ResultSet rs = db.executeQuery(sql);
			while (rs.next()){
				translado = new Translado();
				translado.setID(rs.getLong(ConstantesDAO.id));
				translado.setTipo(rs.getString(ConstantesDAO.tipo));
				translado.setPreco(rs.getFloat(ConstantesDAO.preco));
				retTranslados.add(translado);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("******* Erro ao Consultar "+this.getClass().getSimpleName());
		}
		return retTranslados;
	}
	
	public void insereTranslado(Translado translado) {
		String sql = "INSERT INTO translados VALUES(NULL,'"+translado.getTipo()+"',"+translado.getPreco()+")";
		
		try {
			db.execute(sql);
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("******* Erro ao inserir em "+this.getClass().getSimpleName());
		}
	}

	public void removeTranslado(Translado translado) {
		// TODO Auto-generated method stub	
	}

	public void updateTranslado(Translado translado) {
		// TODO Auto-generated method stub
	}

	public Translado getTransladoById(long transladoid) {
		String sql;
		for(Translado translado:translados){
			if (translado.getID()==transladoid) return translado;
		}
		sql = "select * from translados where id="+transladoid+";";
		
		return (getTransladosFromSQL(sql)).get(0);
	}

	public List<Translado> getTranslados() {
		String sql = "select * from translados order by tipo";
		Translado translado;
		
		translados.clear();
		translados.addAll(getTransladosFromSQL(sql));
		return translados;
	}
}
 
